package command_pattern.ex2;

import lombok.Setter;

import java.util.ArrayList;

/**
 * @author 申书航
 * @version 1.0
 * 配置设置类，用于管理命令的执行与保存
 */
public class ConfigSetting {

    private final ArrayList<Command> commands;

    @Setter
    private Command currCommand;

    /**
     * 构造函数，初始化命令列表
     */
    public ConfigSetting() {
        commands = new ArrayList<>();
    }

    /**
     * 调用当前命令并执行，传入参数保存到命令列表
     * @param args 执行命令所需的参数
     */
    public void call(String args) {
        currCommand.execute(args);
        commands.add(currCommand);
    }

    /**
     * 保存已执行的命令到文件
     */
    public void save() {
        FileUtil.writeToFile(commands);
    }

    /**
     * 恢复并执行已保存的命令
     */
    public void recover() {
        ArrayList records = FileUtil.readCommand();
        if (records != null) {
            for (Object record : records) {
                ((Command) record).execute();
            }
        }
    }
}
